package com.hq.fxh.HttpApi;

import com.hq.fxh.Modle.GetDayStatisticalResultRes;
import com.hq.fxh.Modle.GetEnterpriseRankRes;
import com.hq.fxh.Modle.GetEnterpriseReportRes;
import com.hq.fxh.Modle.GetEntertainmentListRes;
import com.hq.fxh.Modle.GetWeekStatisticalResultRes;
import com.hq.fxh.Modle.KanTieListModle;
import com.hq.fxh.Modle.PlateListModle;
import com.hq.fxh.Modle.PlateSoreModle;
import com.hq.fxh.Modle.RequstReq;
import com.hq.fxh.Modle.SelectByCategoryIdRes;
import com.hq.fxh.Modle.UploadImgRes;
import com.hq.fxh.No5_User.MyModle.Model.CommonRes;
import com.hq.fxh.No5_User.MyModle.Model.GetAdvertByUidRes;
import com.hq.fxh.No5_User.MyModle.Model.GetHomePageByUidRes;
import com.hq.fxh.No5_User.MyModle.Model.GetWebUrlRes;

import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Url;
import rx.Observable;

/**
 * /**
 *
 * @author 薛
 * @ClassName
 * @Description :
 * @Created 2017/8/16
 * @Email xlwenhao1858@sina.com
 */


public interface UserService {


    /**
     * 【近七日企业详细数据】
     */
    @FormUrlEncoded
    @POST("enterprise.asmx/GetWeekStatisticalResult")
    Observable<GetWeekStatisticalResultRes> getWeekStatisticalResult(@Field("uid") String uid);

    /**
     * 【某日员工详细数据】[uid],[date:日期 例:2016-12-26], [sort:1曝光 2点击 3转发 4文章总数],[page:页数 从1开始],[pageSize:每页条数]
     */
    @FormUrlEncoded
    @POST("enterprise.asmx/GetDayStatisticalResult")
    Observable<GetDayStatisticalResultRes> getDayStatisticalResult(@Field("uid") String uid, @Field("date")
            String date, @Field("sort") int sort, @Field("page") int page, @Field("pageSize") int pageSize);


    /**
     * 【企业数据统计】[uid]
     */
    @FormUrlEncoded
    @POST("enterprise.asmx/GetEnterpriseReport")
    Observable<GetEnterpriseReportRes> getEnterpriseReport(@Field("uid") String uid);

    /**
     * 【获取图集列表】[page][pageSize]
     *
     * @param page
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("v3/api.asmx/GetPicSubjectList")
    Observable<GetEntertainmentListRes> getPicSubjectList(@Field("page") int page, @Field("pageSize") int pageSize, @Field("type") int type);


    /**
     * 【获取娱乐列表】[page][pageSize][type:1视频 2美女 3搞笑]
     *
     * @param page
     * @param pageSize
     * @param type
     * @return
     */
    @FormUrlEncoded
    @POST("v3/api.asmx/GetEntertainmentList")
    Observable<GetEntertainmentListRes> getEntertainmentList(@Field("page") int page, @Field("pageSize") int pageSize, @Field("type") int type);


    /**
     * 上传图片
     * 参数  key:标识  serializeData:文件数据  type:图片类型
     */
    @FormUrlEncoded
    @POST("demoapi.asmx/UploadImg")
    Observable<UploadImgRes> uploadImg(@Field("key") String key, @Field("serializedData") String serializedData, @Field("type") String type);


    /**
     * 根据文章栏目ID查询文章,返回列表
     * [categoryID] 数据所属ID
     *
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("demoapi.asmx/GetNewsByCategoryId")
    Observable<SelectByCategoryIdRes> selectByCategoryId(@Field("categoryId") String id, @Field("page") int pageNum, @Field("pageSize") int pageSize);


    /**
     * 【本月员工排行榜】[uid],[sort:1曝光 2点击 3转发 4文章总数],[page:页数 从1开始],[pageSize:每页条数]
     */
    @FormUrlEncoded
    @POST("enterprise.asmx/GetEnterpriseRank")
//type 1表示月榜 2表示总榜  没有这个参数的话 直接返回月榜 sort:曝光 点击 转发 文章
    Observable<GetEnterpriseRankRes> getEnterpriseRank(@Field("uid") String uid, @Field("sort") int sort, @Field("type") int type, @Field("page") int page, @Field("pageSize") int pageSize);


    /**
     * 获取Web页面地址
     */
    @FormUrlEncoded
    @POST("demoapi.asmx/GetWebUrl")
    Observable<GetWebUrlRes> getWebUrl(@Field("uid") String uid);

    /**
     * 获取形象空间所有信息
     */
    @FormUrlEncoded
    @POST("demoapi.asmx/GetHomePageByUid")
    Observable<GetHomePageByUidRes> getHomePageByUid(@Field("uid") String uid);

    /**
     * 更新形象空间
     */
    @FormUrlEncoded
    @POST("demoapi.asmx/UpdateHomePageInfo")
    Observable<CommonRes> updateHomePageInfo(@Field("uid") String uid, @Field("type") int type, @Field("json") String json);

    /**
     * 获取广告模板
     */
    @FormUrlEncoded
    @POST("v3/api.asmx/GetAdvertByUid")
    Observable<GetAdvertByUidRes> getAdTemp(@Field("uid") String uid);


    /**
     * 更新用户广告模板
     */
    @FormUrlEncoded
    @POST("v3/api.asmx/UpdateAdvert")
    Observable<CommonRes> updateAdvert(@Field("uid") String uid, @Field("json") String json);


    @FormUrlEncoded
    @POST
    Call<KanTieListModle> getKanTieList(@Url String url, @Field("type") int type, @Field("page") int page, @Field("page_size") int page_size);

    /**
     * 获取看帖列表
     * 参数  categort_id 二级标题  type 1 全部 2 精选
     */
    @FormUrlEncoded
    @POST
    Call<PlateListModle> getPlateList(@Url String url, @Field("category_id") int category_id, @Field("type") int type, @Field("page") int page, @Field("page_size") int page_size);


    /**
     * 获取帖子分类信息
     */
    @GET
    Call<PlateSoreModle> GetPlateSortList(@Url String url);

    /**
     * 上传帖子
     */
    @FormUrlEncoded
    @POST
    Call<RequstReq> uploadPlate(@Url String url, @Field("content") String content);


    /**
     * 上传帖子
     * </summary>
     * <param name="type">1 关注 2取消关注</param>
     * <param name="category_id">二级板块ID</param>
     */
    @FormUrlEncoded
    @POST
    Call<RequstReq> followerPlate(@Url String url, @Field("type") int type, @Field("category_id") int category_id);
}
